package com.shrimpcolo.share.v03;

import com.shrimpcolo.share.v03.computer.CPU;
import com.shrimpcolo.share.v03.computer.Computer;
import com.shrimpcolo.share.v03.computer.EMS;
import com.shrimpcolo.share.v03.computer.HardDisk;
import com.shrimpcolo.share.v03.impl.IntelCPU;
import com.shrimpcolo.share.v03.impl.JSD_EMS;
import com.shrimpcolo.share.v03.impl.XJ_HardDisk;

/**
 * 
 * @author Johnny Tam
 * 采用面向接口编程思想 组装一台计算机
 * 
 * 需求说明：
 * 1） 计算机组成部分： 显示器，主板，CPU， 硬盘， 内存， 鼠标，键盘。 这里仅仅关注 CPU,硬盘，内存
 * 2） 以上每个组件可以由不同厂商提供，但是都要遵循一定的规范和约定
 * 要求，采用接口定义各组件，采用实现类组装计算机， 组装只关注 主要组成部分(CPU, 硬盘，内存)
 * 然后输出计算机信息
 * 
 * 实现思路：
 * 1) 定义CPU 接口CPU, 返回CPU的品牌和主频
 * 2） 定义内存结构EMS,返回内存容量
 * 3） 定义硬盘接口HardDisk，返回硬盘容量
 * 4） 编写各组件厂商分别实现 CPU, EMS,HardDisk接口
 * 5） 编写计算机类，组长计算机并显示相关信息
 * 6） 编写测试类，ComputerDemo测试组装信息
 * 
 */
public class ComputerDemo {

	public static void main(String[] args) {
		
		CPU cpu=new IntelCPU();
		EMS ems=new JSD_EMS();
		HardDisk hardDisk=new XJ_HardDisk();

		Computer computer=new Computer(cpu, ems, hardDisk);
		computer.showInfo();
		
	}

}
